<?php
/**
 *  MyApp_ActionForm.php
 *
 *  @author
 *  @package    Smscom
 *  @version
 */

/**
 *
 *  @author     {$author}
 *  @package    Smscom
 *  @access     public
 */
class MyApp_ActionForm extends Ethna_ActionForm
{
    var $form_template = array();
    var $use_validator_plugin = true;


    /**
     *
     *  @access public
     *  @param  string      $name
     *  @param  int         $code
     */
    function handleError($name, $code)
    {
        return parent::handleError($name, $code);
    }

    /**
     *
     *  @access protected
     *  @param  array   $form_template
     *  @return array
     */
    function _setFormTemplate($form_template)
    {
        return parent::_setFormTemplate($form_template);
    }

    /**
     *
     *  @access protected
     */
    function _setFormDef()
    {
        return parent::_setFormDef();
    }
    
    /**
     *
     *  @access protected
     */
    function _validatePlus()
    {
        if (!empty($this->check_csrf_id)) {
            if (!Ethna_Util::isCsrfSafe()) {
                $this->ae->add(null, 'scrf_id');
            }
        }
    }
    
    /**
     *  チェックメソッド: メールアドレス
     *
     *  @access public
     *  @param  string  $name   フォーム項目名
     *  @return object  Ethna_Error エラーオブジェクト(エラーが無い場合はnull)
     */
    function &checkMailaddress($name)
    {
        $null = null;
        $form_vars = $this->check($name);
        
        if ($form_vars == null) {
            return $null;
        }
        //#65 Start Luvina Modify
        $ip_table_sms = $this->backend->config->get('elapi_valid_ip_table');
        $ip_client = Smscom_Util::getIpAddresses();
        $ip_sms_flg = Smscom_Util::isValidSourceIp($ip_client, $ip_table_sms);
        
        foreach ($form_vars as $v) {
            if ($v === "") {
                continue;
            }
            //#52 Start
            if ($ip_sms_flg) {
                if(Ethna_Util::checkMailaddress($v) == false) {
                   return $this->ae->add($name,
                    '{form}の書式が正しくありません', E_FORM_INVALIDCHAR); 
                }
            } elseif (Smscom_Util::checkMailaddress($v) == false) {
               return $this->ae->add($name,
                '{form}の書式が正しくありません', E_FORM_INVALIDCHAR);
            }
         //#65 End Luvina Modify
            //#52 End
            if ($this->backend->config->get('mailaddress_dns_check') && (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) { 
                $check_mailaddress = substr(strstr(trim(chop($v)), "@"), 1, strlen(strstr(trim(chop($v)), "@")));
                // MXレコード、Aレコード検索
                if (!(checkdnsrr($check_mailaddress) || checkdnsrr($check_mailaddress, 'A'))) {
                    return $this->ae->add($name,'{form}の書式が正しくありません', E_FORM_INVALIDCHAR);
                }
            }
        }
        
        return $null;
    }
    
    /**
     *  フォーム値変換フィルタ: 空文字ならnullに変換
     *
     *  @access protected
     *  @param  mixed   $value  フォーム値
     *  @return mixed   変換結果
     */
    function _filter_empty2null($value)
    {
        $value = empty($value) ? null : $value;
        return $value;
    }
    
    /**
     *  フォーム値変換フィルタ: 改行コード・TABをすべて削除→文字列前後の半角・全角スペースを削除
     *
     *  @access protected
     *  @param  mixed   $value  フォーム値
     *  @return mixed   変換結果
     */
    function _filter_linetrim($value)
    {
        mb_regex_encoding('UTF-8');
        $value = mb_ereg_replace('[\r\n\t\v\0]', '', $value);
        $value = mb_ereg_replace('^[ 　]*(.*?)[ 　]*$', '\1', $value);
        
        return $value;
    }
    
    /**
     *  FCKEditor用フォーム値変換フィルタ: 自動で入力されてしまう<br />タグを除去
     *
     *  @access protected
     *  @param  mixed   $value  フォーム値
     *  @return mixed   変換結果
     */
    function _filter_fckStripBr($value)
    {
        return preg_replace('/^<br \/>$/', '', $value);
    }
}
// }}}
?>
